package com.springboot.demo.design.pattern.idempotent;

import com.springboot.common.entity.request.ParameterBody;
import com.springboot.demo.design.pattern.form.Form;

/**
 * 幂等工具接口
 *
 * @author supu
 * @date 2019-03-26 11:01
 **/
public interface IdempotentHelper {

    /**
     * 比较并放入请求结果到缓存
     *
     * @param form 表单
     * @param <U> 请求结果
     * @param <V> 请求参数
     * @return
     */
    <U, V extends ParameterBody> boolean compareAndSet(Form<U, V> form) throws Exception;

    /**
     * 比较并取出请求结果
     *
     * @param form 表单
     * @param <U> 请求结果
     * @param <V> 请求参数
     * @return
     */
    <U, V extends ParameterBody> boolean compareAndGet(Form<U, V> form) throws Exception;
}
